'''
Created on 24/05/2013

@author: cristian
'''
from pm.database import db
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship
import datetime

class SolicitudCambio(db.Model):
    '''
    Clase que representa las solicitudes de cambios relacionados a un item
    '''
    __tablename__ = 'solicitud_cambio'
    
    id_solicitud_cambio = db.Column(db.Integer, primary_key=True, nullable=False)
    
    id_usuario = db.Column(db.Integer, ForeignKey('usuarios.id_usuario'), nullable=False)
    
    user_name= db.Column(db.String(64), nullable=False)
    
    observacion = db.Column(db.String(500), nullable=False)
    
    impacto_total = db.Column(db.String(64), nullable=False)
    
    impacto_monetario = db.Column(db.String(64), nullable=False)
    
    estado = db.Column(db.String(64), nullable=False)
       
    activo = db.Column(db.Boolean, nullable=False)
    
    nombre_items = db.Column(db.String(500), nullable=False)
    
    contador_votacion = db.Column(db.Integer, nullable=True)
    
    voto_favor = db.Column(db.Integer,nullable=True)
    
    voto_contra= db.Column(db.Integer,nullable=True)
    
    fecha_creacion = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    
    ejecutado= db.Column(db.Boolean,nullable=True)
    
    lbs_afectadas = db.Column(db.String(), nullable=False)

    relationship("usuarios")    
    

    def __init__(self, id_usuario,user_name, observacion, impacto_total, impacto_monetario, estado, activo,nombre_items,contador_votacion,voto_favor,voto_contra,fecha_creacion,ejecutado, lbs_afectadas):
        self.id_usuario = id_usuario
        self.user_name=user_name
        self.observacion = observacion
        self.impacto_total = impacto_total
        self.impacto_monetario= impacto_monetario
        self.estado = estado
        self.activo = activo
        self.nombre_items=nombre_items
        self.contador_votacion= contador_votacion
        self.fecha_creacion = fecha_creacion
        self.voto_favor=voto_favor
        self.voto_contra=voto_contra
        self.ejecutado=ejecutado
        self.lbs_afectadas = lbs_afectadas
    
    
    
    def __json__(self):
        return {'id':self.id_solicitud_cambio , 
                'id_usuario': self.id_usuario, 
                'user_name': self.user_name,
                'observacion': self.observacion, 
                'impacto_total': self.impacto_total, 
                'impacto_monetario': self.impacto_monetario,
                'estado': self.estado, 
                'activo': self.activo,
                'nombre_items' : self.nombre_items,
                'contador_votacion': self.contador_votacion,
                'voto_favor':self.voto_favor,
                'voto_contra':self.voto_contra,
                'fecha_creacion':str(self.fecha_creacion),
                'ejecutado':self.ejecutado,
                'lbs_afectadas': self.lbs_afectadas
                }